# 题目1：画出下面代码每一行的引用情况
a = 1  #a指向1的地址
b = a  #b指向a的地址,也就是b也指向1
a = 2  #a重新指向2的地址,此时a=2,b=1

# 题目2：画出下面代码每一行的引用情况
def test(num):
    num = num+1  #2.处 Num引用num+1的值  为11
    result = "hello"    #3.处result引用”hello”的地址
    return result
a = 10
r = test(a)  #a指向10的地址,随后调用r=test()函数,随后使形参num也指向a的地址; 即num=10


# 题目3：画出下面代码的内存情况
a = 1  # a引用1的地址,a=1
print(a)
a = "hello" # a引用字符串hello的地址,a=hello
print(a)
result = a.split("e") # result 引用a以e切割 result为['h', 'llo'] a=hello
print(a)
a = [1, 2, 3] # a引用[1,2,3] a = [1,2,3]
print(a)
a.append(5)     # 给该列表增加元素  a=[1,2,3,5]
print(a)
a = [3, 2, 1]  # a重新指向列表[3,2,1]
print(a)

# 题目4：有代码如下：
def demo1():
	# 1 num = NONE
    num = 10
    # 2  # num =10
    num = 20
    # 3 # num = 20


def demo2():
	# 4  num = NONE
    num = 100
    # 5 num = 100


demo1()
# 6 num = none
demo2()
# 7 num = none

# 问题1：说说1 2 3 4 5 处num的值分别是多少，可以得出什么结论
# 问题2：在def demo1():上面写一行代码 num = 20,说说1 2 3 4 5 处num的值分别是多少，可以得出什么结论
# 20 10 20 20 100
# 问题3：在6出增加一行代码num = 50 说说1 2 3 4 5 处num的值分别是多少，可以得出什么结论
#1,4处未定义 2=10 5=100 3=20
# 问题4：如何让demo1和demo2中可以修改全局变量num的值，修改之后，7处num的值是多少
# global  后定义num的值


"""
题目5：返回值相关的题目
	1、定义一个函数实现一个功能，传递一个存数字的列表到函数中，计算出所有元素的和。
		调用函数得到结果，判断和是否是3的倍数，并打印出对应的结论
	2、定义一个函数，接收两个参数，第一个参数是列表，第二个参数不限制，函数所实现的功能是
		判断第一个参数列表中是否存在第二个参数这个元素，
		如果存在，则什么事情都不做，如果不存在则将第二个参数追加到列表的后边
	3、定义一个函数，接收一个参数，这个参数是一个数字列表。功能是得到一个新的列表
	，新列表中的每一个元素是旧列表中的对应元素乘以5
"""
#题目1
def test1(list1):
    sum1 = 0
    for i in list1:
        sum1 +=i
    if sum1 %3 == 0:
        return "可以被3整除"
    else:
        return "不能被3整除"
#题目2
def test2(list,str):
    if list.count(str) ==0:
        list.append(str)
    else:
        return "找到了"
#题目3
def test3(list_num):
    list_new = []
    for i in list_num:
        new = i * 5
        list_new.append(new)
    print(list_new)


